package org.jeecg.modules.lab.items.task.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.lab.entrust.entity.LabEntrustItems;
import org.jeecg.modules.lab.entrust.entity.LabEntrustSample;
import org.jeecg.modules.lab.items.vo.*;

import java.util.List;
import java.util.Map;


/**
 * @Description: 委托、监督任务信息
 * @Author: jeecg-boot
 * @Date: 2023-07-20
 * @Version: V1.0
 */
public interface ILabTaskAllotService extends IService<LabTaskAllotPage> {


    List<LabTaskAllotPage> getWTaskLists(String entName, String sampleType, String allotStatus, String billStatus, String auditId, String ratifyId, String userId, String handlDate, String handler);


    List<LabTaskAllotPage> getWReportLists(String entName, String sampleType, String allotStatus, String billStatus, String chiefId, String auditId, String ratifyId, String userId);

    /**
     * 根据样品类型mId
     *
     * @param mId
     * @return
     */
    LabTaskUserPage getAutoUser(String mId);


    /**
     * 根据样品类型mId
     *
     * @param mId
     * @return
     */
    List<LabTaskUserPage> getAutoUserList(String mId);

    /**
     * 修改一对多
     *
     * @param labTaskItemsPage
     */
    void updateMain(LabTaskItemsPage labTaskItemsPage);

    /**
     * 根据人员查询检测项目
     *
     * @param userId
     * @return
     */
    List<LabCheckItemsPage> getCheckItems(String userId, String auditId, String entrustType, String entName, String sampleType, String sampleSort, String itemStatus, String pubDate);

    LabCheckItemsPage getItems(String taskItemId, String entrustId);

    /**
     * 更新科研实验
     *
     * @param labEntrustItemss
     */
    void updateMainKy(LabEntrustItems labEntrustItemss);

    String getAllTestUsers(String entrustId);

    String getTestDepart(String entrustId);

    /**
     * 待检样品数量
     *
     * @param userId
     * @return
     */
    LabSamItemPage getWaitSamNum(String userId);

    /**
     * 待检样品列表
     *
     * @param userId
     * @return
     */
    List<LabEntrustSample> getWaitSamList(String userId);

    /**
     * 实验数据统计
     *
     * @param date
     * @return
     */
    LabSamItemPage querySamItemCount(String date, String checkType, String startTime, String endTime);

    /**
     * 每月实验统计
     *
     * @param year
     * @return
     */
    Map<String, Object> querySamItemYear(String year);

    List<LabAdutiUserPage> queryAduitUsers(String tId);

    /**
     * 分配任务实验项目-人员
     *
     * @param labEntrustItems
     * @return
     */
    List<LabItemsUsersPage> getItemToUsers(List<LabEntrustItems> labEntrustItems);


    /**
     * 分配任务实验项目-人员
     *
     * @param itemId
     * @return
     */
    List<LabItemsUsersPage> getItemToUserSkill(String itemId, String basisId, String userName);

    List<LabItemsUsersPage> setLabUserTree(List<LabItemsUsersPage> labTaskUserTree);

    void updateEntrustItems(LabEntrustItems labEntrustItems);

    List<LabTaskAllotPage> getRecordReportList(String entName, String sampleType, String allotStatus, String billStatus, String chiefId, String auditId, String ratifyId, String userId);
}
